#ifndef PATH_COST_CALCULATORS_HPP_INCLUDED
#define PATH_COST_CALCULATORS_HPP_INCLUDED

#include "pathfind.hpp"
#include "tile_logic.hpp"

namespace hex {
class gamemap;
}

class road_cost_calculator : public hex::path_cost_calculator {
public:
	explicit road_cost_calculator(const hex::gamemap& m);
	int movement_cost(const hex::location& a, const hex::location& b) const;
	int estimated_cost(const hex::location& a, const hex::location& b) const;
	bool allowed_to_move(const hex::location& a) const;
private:
	const hex::gamemap& map_;
};

class move_cost_calculator : public hex::path_cost_calculator {
public:
	explicit move_cost_calculator(const hex::gamemap& m);
	int movement_cost(const hex::location& a, const hex::location& b) const;
	int estimated_cost(const hex::location& a, const hex::location& b) const;
	bool allowed_to_move(const hex::location& a) const;
private:
	const hex::gamemap& map_;
};

#endif
